package problems.daily;

import java.util.HashMap;
import java.util.Map;

/**
 * 1487. 保证文件名唯一
 * <p>https://leetcode.cn/problems/making-file-names-unique/</p>
 *
 * @author habitplus
 * @since 2023/3/3 9:36
 */
public class DT1487 {
    public String[] getFolderNames(String[] names) {
        // 存储当前name的下一个数字k
        Map<String, Integer> indexMap = new HashMap<>();
        for (int i = 0; i < names.length; ++i) {
            int k = indexMap.getOrDefault(names[i], 0);
            if (k == 0) {
                indexMap.put(names[i], 1);
                continue;
            }
            // 包含
            String newName;
            while (indexMap.containsKey((newName = suffix(names[i], k)))) {
                ++k;
            }

            // 当前文件的新名字为 xxx(k)
            // 以前的名字的下标要往后移一个，即k+1
            indexMap.put(names[i], k + 1);
            // 新名字也要放入map，并更新下一个数字为1
            indexMap.put(newName, 1);
            names[i] = newName;
        }

        return names;
    }

    private String suffix(String name, int k) {
        return name + "(" + k + ")";
    }
}
